package com.lanou3g.k12api.web.controller;

import com.lanou3g.k12api.entity.Article;
import com.lanou3g.k12api.utils.K12Result;
import com.lanou3g.k12api.utils.K12ResultUtils;
import com.lanou3g.k12api.utils.RandomEntityUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;
import java.util.List;

@Api(description = "资讯管理")
@RestController
public class ArticleController {


    @ApiOperation(value = "新增资讯")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "资讯ID（新增接口不可传ID）", paramType = "form"),
            @ApiImplicitParam(name = "title", value = "资讯标题", required = true, example = "幸福的家庭，不是三观相合，而是不争对错",
                    paramType = "form"),
            @ApiImplicitParam(name = "content", value = "资讯内容", required = true, example =
                    "当家人的幸福大于坚持“三观”的时候，对错已经不重要了。 \n\n　　知乎上有人问：幸福的家庭是什么样的？\n　　最高赞回答是：幸福的家庭都不争对错。\n" +
                            "　　很多人喜欢把家庭矛盾归咎于“三观不合”。可是，哪有那么多的三观相合？\n　　更多的时候，只是不分对错。\n" +
                            "　　《辛普森一家》里有一句话说的好：“亲爱的，如果你太好胜，永远都不会快乐的。”\n" +
                            "　　杨绛在《我们仨》里说过这样的小事：“我和钟书在出国的轮船上曾吵过一架，原因只为一个法文的读音。\n　　我说他的口音带乡音，他不服，说了许多伤感情的话。\n" +
                            "　　我也尽力伤他。\n　　然后我请同船一位能说英语的法国人公断。\n　　她说我对，他错。\n　　我虽然赢了，却觉得无趣，很不开心。”\n" +
                            "　　夫妻相处总会有分歧，一定要争个对错，殊不知，赢得了结果，却输了感情，自己也落个不愉快。\n　　遗憾的是，很多人不懂这个道理，对一些小事上纲上线：\n　　你想去学瑜伽班，Ta" +
                            "非说买个垫子回家练。\n　　你要去外面吃饭，Ta非说外面都是地沟油。\n　　你说大海很漂亮，Ta非说大海淹死过很多人....." +
                            ".\n　　这样的事情，谁对谁错？其实都没有错，不过是看法不同，小事而已。\n　　和伴侣为了鸡毛蒜皮的小事争论不休不欢而散之后，总有人问起：好的婚姻，到底是什么样的？\n" +
                            "　　有人可能会回答是三观相合。\n　　好的婚姻三观固然重要，但比三观相合更重要的，是不争对错。\n" +
                            "　　刘涛和王珂的爱情故事为很多人称道，刘涛在一次访谈中说到彼此的相处之道，就是不争对错。\n" +
                            "　　“有时候争论是不会有结果的，但争论的过程会让大家觉得累，心里不舒服，我觉得任何的计较都是伤害。”\n　　生活中，没有三观完全相同的两个人。\n" +
                            "　　家人之间，总会有这样那样的不同。\n　　比三观更重要的是，你理解我，我理解你，遇到问题不剑拔弩张，不追究谁对谁错。\n　　网上有一个小故事。\n" +
                            "　　一对老夫妻吵架，丈夫总让着妻子。妻子问：“明明知道我错了，为什么还让着我。” \n　　丈夫说：“因为我怕吵赢了，输了感情，丢了你，我就输了人生的全部！” " +
                            "\n　　婚姻里，哪里有那么多的三观相合，不过是你在争吵，他在笑。", paramType = "form"),
            @ApiImplicitParam(name = "cid", value = "文章分类ID", required = true, paramType = "form", example = "1"),
            @ApiImplicitParam(name = "createTime", value = "创建时间（不用传）", paramType = "form"),
            @ApiImplicitParam(name = "status", value = "状态（0 代表正常，1 代表停用）", required = true, defaultValue = "0",
                    allowableValues = "0,1", paramType = "form")
    })
    @PostMapping("/article")
    public K12Result create(Article article) {
        System.out.println(article);
        return K12ResultUtils.ok();
    }

    @ApiOperation(value = "通过ID删除资讯")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "要删除的ID", example = "1")
    })
    @DeleteMapping("/article/{id}")
    public K12Result delete(@PathVariable Long id) {
        System.out.println(id);
        return K12ResultUtils.ok();
    }

    @ApiOperation(value = "通过ID批量删除资讯")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "ids", value = "要删除的ID（逗号分隔）", example = "1,2,3")
    })
    @DeleteMapping("/articles/{ids}")
    public K12Result delete(@PathVariable Long[] ids) {
        System.out.println(Arrays.toString(ids));
        return K12ResultUtils.ok();
    }

    @ApiOperation(value = "通过ID修改资讯")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "资讯ID", required = true, example = "1"),
            @ApiImplicitParam(name = "title", value = "资讯标题", required = true, example = "幸福的家庭，不是三观相合，而是不争对错",
                    paramType = "form"),
            @ApiImplicitParam(name = "content", value = "资讯内容", required = true, example =
                    "当家人的幸福大于坚持“三观”的时候，对错已经不重要了。 \n\n　　知乎上有人问：幸福的家庭是什么样的？\n　　最高赞回答是：幸福的家庭都不争对错。\n" +
                            "　　很多人喜欢把家庭矛盾归咎于“三观不合”。可是，哪有那么多的三观相合？\n　　更多的时候，只是不分对错。\n" +
                            "　　《辛普森一家》里有一句话说的好：“亲爱的，如果你太好胜，永远都不会快乐的。”\n" +
                            "　　杨绛在《我们仨》里说过这样的小事：“我和钟书在出国的轮船上曾吵过一架，原因只为一个法文的读音。\n　　我说他的口音带乡音，他不服，说了许多伤感情的话。\n" +
                            "　　我也尽力伤他。\n　　然后我请同船一位能说英语的法国人公断。\n　　她说我对，他错。\n　　我虽然赢了，却觉得无趣，很不开心。”\n" +
                            "　　夫妻相处总会有分歧，一定要争个对错，殊不知，赢得了结果，却输了感情，自己也落个不愉快。\n　　遗憾的是，很多人不懂这个道理，对一些小事上纲上线：\n　　你想去学瑜伽班，Ta" +
                            "非说买个垫子回家练。\n　　你要去外面吃饭，Ta非说外面都是地沟油。\n　　你说大海很漂亮，Ta非说大海淹死过很多人....." +
                            ".\n　　这样的事情，谁对谁错？其实都没有错，不过是看法不同，小事而已。\n　　和伴侣为了鸡毛蒜皮的小事争论不休不欢而散之后，总有人问起：好的婚姻，到底是什么样的？\n" +
                            "　　有人可能会回答是三观相合。\n　　好的婚姻三观固然重要，但比三观相合更重要的，是不争对错。\n" +
                            "　　刘涛和王珂的爱情故事为很多人称道，刘涛在一次访谈中说到彼此的相处之道，就是不争对错。\n" +
                            "　　“有时候争论是不会有结果的，但争论的过程会让大家觉得累，心里不舒服，我觉得任何的计较都是伤害。”\n　　生活中，没有三观完全相同的两个人。\n" +
                            "　　家人之间，总会有这样那样的不同。\n　　比三观更重要的是，你理解我，我理解你，遇到问题不剑拔弩张，不追究谁对谁错。\n　　网上有一个小故事。\n" +
                            "　　一对老夫妻吵架，丈夫总让着妻子。妻子问：“明明知道我错了，为什么还让着我。” \n　　丈夫说：“因为我怕吵赢了，输了感情，丢了你，我就输了人生的全部！” " +
                            "\n　　婚姻里，哪里有那么多的三观相合，不过是你在争吵，他在笑。", paramType = "form"),
            @ApiImplicitParam(name = "create", value = "创建时间（不用传）", paramType = "form"),
            @ApiImplicitParam(name = "status", value = "状态（0 代表正常，1 代表停用）", required = true, defaultValue = "0",
                    allowableValues = "0,1", paramType = "form")
    })
    @PutMapping("/article/{id}")
    public K12Result update(@PathVariable Long id, Article article) {
        System.out.println(id);
        System.out.println(article.getId());
        return K12ResultUtils.ok();
    }

    @ApiOperation(value = "通过ID获取资讯")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "要获取的资讯的ID", example = "1")
    })
    @GetMapping("/article/{id}")
    public K12Result findById(@PathVariable Long id) {
        Article article = RandomEntityUtils.random(Article.class);
        article.setId(id);
        return K12ResultUtils.ok(article);
    }

    @ApiOperation(value = "获取资讯列表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "page", value = "页码", defaultValue = "1"),
            @ApiImplicitParam(name = "size", value = "每页数据量（建议不传）", defaultValue = "30"),
            @ApiImplicitParam(name = "keyword", value = "查询关键词"),
    })
    @GetMapping("/articles")
    public K12Result list(@RequestParam(defaultValue = "1") int page,
                          @RequestParam(defaultValue = "30") int size,
                          @RequestParam(defaultValue = "") String keyword) {
        System.out.println(page + "\t" + size + "\t" + keyword);
        List<Article> articles = RandomEntityUtils.random(Article.class, size);
        for (Article article : articles) {
            article.setContent(RandomEntityUtils.randomCNString(100, 2000));
        }
        return K12ResultUtils.ok(articles);
    }

}
